package com.zg.common.web.service;

import com.zg.common.core.R;
import com.zg.common.core.vo.ColumnVo;

import java.util.List;

/**
 * @author Zxb
 */
public interface DdlService {
	/**
	 * 是否存在表
	 * @param schema
	 * @param tableName
	 * @return
	 */
	Boolean isTableExist(String schema, String tableName);
	/**
	 * 查询表
	 * @param schema
	 * @return
	 */
	List<String> findTable(String schema);

	/**
	 * 根据前缀查询表
	 * @param schema
	 * @param prefix
	 * @return
	 */
	List<String> findTableWithPrefix(String schema, String prefix);

	/**
	 * 查询表字段
	 * @param tableName
	 * @param schema
	 * @return
	 */
	List<ColumnVo> findColumnByTable(String tableName, String schema);

	/**
	 * 添加公共字段
	 * @param schema
	 * @param tableName
	 */
	void addPubColumn(String schema, String tableName);

	/**
	 * 添加树字段
	 * @param schema
	 * @param tableName
	 */
	void addTreeColumn(String schema, String tableName);

	/**
	 * 删除各个字段
	 * @param schema
	 * @param tableName
	 */
	void dropPubColumn(String schema, String tableName);

	/**
	 * 删除字段
	 * @param schema
	 * @param tableName
	 * @param columnName
	 * @return
	 */
	R<?> dropColumn(String schema, String tableName, String columnName);

	/**
	 * 添加表
	 * @param schema
	 * @param tableName
	 * @param columnVoList
	 * @return
	 */
	R<?> addTable(String schema, String tableName, List<ColumnVo> columnVoList);

	/**
	 * 删除表
	 * @param schema
	 * @param tableName
	 * @return
	 */
	R<?> delTable(String schema, String tableName);

	/**
	 * 表添加字段
	 * @param schema
	 * @param tableName
	 * @param columnVoList
	 * @return
	 */
	R<?> mergeColumnsForTable(String schema, String tableName, List<ColumnVo> columnVoList);

}
